View Javadoc

1   package uba.db.sql.interpreter.sentencevalidation;
2   
3   import java.util.Set;
4   
5   import uba.db.sql.language.ColumnName;
6   import uba.db.sql.language.Sentence;
7   import uba.db.sql.language.VisitorBehavior;
8   
9   public class ColumnNameValidation extends SentenceValidationBehavior {
10  
11  	public ColumnNameValidation(Sentence sentence,
12  			SentenceValidator validationContext) {
13  		super(sentence, validationContext);
14  	}
15  
16  	/***
17  	 * @see uba.db.sql.interpreter.sentencevalidation.SentenceValidationBehavior#execute()
18  	 */
19  	public void execute() throws SentenceValidationException {
20  		try {
21  			sentence.accept(new ColumnNameValidationVisitor());
22  		} catch (Exception e) {
23  			throw new SentenceValidationException(e);
24  		}
25  	}
26  
27  	private class ColumnNameValidationVisitor extends VisitorBehavior {
28  		public void visitColumnName(ColumnName columnName) {
29  			String columnNameString = columnName.nameAsString();
30  			Set tablesFound = validator
31  					.findReferencedTablesWithColumnNamed(columnNameString);
32  
33  			if (tablesFound.isEmpty()) {
34  				throw new InexistantColumnNameException(columnNameString);
35  			}
36  
37  			if (tablesFound.size() > 1) {
38  				throw new AmbiguousColumnNameException(columnNameString,
39  						tablesFound);
40  			}
41  		}
42  	}
43  
44  }